Saltar al contenido principal
PUT
/
menus
/
products
/
{id}
Actualizar producto
curl --request PUT \
  --url https://api.example.com/menus/products/{id}
Actualiza un producto dentro de un menú compuesto. Usa este endpoint cuando tu POS o RMS envía cambios a nivel de ítem — precios, disponibilidad u overrides por canal — sin reemplazar el menú completo.
Requiere un access token con el scope menus:write. Consulta Authorize para obtener un token.

Parámetros de ruta

ParámetroDescripción
idIdentificador externo del producto. Solo alfanuméricos, _ y -. 1–64 caracteres.

Request

curl -X PUT "https://firespark.vercel.app/api/integrations/v1/menus/products/hamburguesa-clasica" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Hamburguesa clásica",
    "description": "Carne Angus con lechuga y tomate.",
    "image_url": "https://cdn.example.com/hamburguesa-clasica.jpg",
    "channels": {
      "APP": {
        "id": "app",
        "uid": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
        "name": "App móvil",
        "stores": {
          "centro": {
            "id": "centro",
            "uid": "c3d4e5f6-a7b8-9012-cdef-123456789012",
            "name": "Centro",
            "fulfillment": {
              "DELIVERY": {
                "uid": "d4e5f6a7-b8c9-0123-def4-567890abcdef",
                "id": "delivery",
                "type": "DELIVERY",
                "name": "Delivery",
                "pricing": {
                  "minimum_quantity": 1,
                  "maximum_quantity": 10
                },
                "availability": {
                  "status": "AVAILABLE",
                  "schedules": [{
                    "monday": { "start_time": "11:00:00", "end_time": "22:00:00" }
                  }],
                  "out_of_stock_until": null
                }
              }
            }
          }
        }
      }
    },
    "overrides": [],
    "status": "ACTIVE"
  }'

Objeto producto

CampoTipoDescripción
namestringNombre visible. 1–100 caracteres.
descriptionstringDescripción opcional. Hasta 500 caracteres.
image_urlstringURL de imagen del producto.
channelsobjectPrecios y disponibilidad por canal, tienda y fulfillment.
overridesarrayCambios programados del producto.
statusstringACTIVE o INACTIVE.
Cada entrada de fulfillment en channels requiere uid, id, type, name, pricing y availability. El objeto availability incluye status, schedules (null cuando no hay restricción de horarios) y out_of_stock_until opcional.

Response

Devuelve el producto actualizado en data.

Respuestas de error

EstadoDescripción
400Error de validación.
401Access token ausente o inválido.
403El token no incluye el scope menus:write.
404No existe un producto con este id en el menú.